<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>其他类型封装</title>
</head>

<body>

</body>
<script>

    // 返回新的promise
    // {
    //     let p1 = new Promise((resolve, reject) => {
    //         resolve("fulfilled")
    //     })
    //         .then(
    //             value => {
    //                 return new Promise((resolve, reject) => {
    //                     // resolve("ok")
    //                     reject("failed")
    //                 })
    //             },
    //             reason => { }
    //         )
    //         .then(
    //             value => {
    //                 console.log("value: " + value)
    //             },
    //             reason => {
    //                 console.log("reason: " + reason)
    //             }
    //         )
    // }

    // then方法返回新的promise
    // {
    //     let p2 = new Promise((resolve, reject) => {
    //         resolve("fulfilled")
    //     })
    //         .then(
    //             value => {
    //                 return {
    //                     then(resolve, reject) {
    //                         setTimeout(() => {
    //                             resolve("ok")
    //                         }, 1000);
    //                     }
    //                 }
    //             },
    //             reason => { }
    //         )
    //         .then(
    //             value => {
    //                 console.log(value)
    //             },
    //             reason => {
    //                 console.log("reason: " + reason)
    //             }
    //         )
    // }

    // 类方法返回新的pomise
    // {
    //     let p2 = new Promise((resolve, reject) => {
    //         resolve("fulfilled")
    //     })
    //         .then(
    //             value => {
    //                 class Test{
    //                       then(resolve, reject) {
    //                         // setTimeout(() => {
    //                             resolve("ok")
    //                         // }, 1000);
    //                     }
    //                 }
    //                 return new Test()
    //             },
    //             reason => { }
    //         )
    //         .then(
    //             value => {
    //                 console.log(value)
    //             },
    //             reason => {
    //                 console.log("reason: " + reason)
    //             }
    //         )
    // }

    // 静态类返回新的promise
    {
        let p2 = new Promise((resolve, reject) => {
            resolve("fulfilled")
        })
            .then(
                value => {
                    return class {
                        static then(resolve, reject) {
                            setTimeout(() => {
                            resolve("ok")
                            }, 1000);
                        }
                    }
                },
                reason => { }
            )
            .then(
                value => {
                    console.log(value)
                },
                reason => {
                    console.log("reason: " + reason)
                }
            )
    }


</script>

</html>